﻿namespace NKernel.Core
{
    #region Enumerations

    /// <summary>
    /// Enumerates the various states that the components can be in.
    /// </summary>
    public enum ComponentStateType
    {
        /// <summary>
        /// Initial state
        /// </summary>
        Uninitialised,
        /// <summary>
        /// Component has been initialised
        /// </summary>
        Initialised,
        /// <summary>
        /// Component has been started
        /// </summary>
        Started,
        /// <summary>
        /// Component has been stopped
        /// </summary>
        Stopped,
        /// <summary>
        /// Component has been cleaned and resources released
        /// </summary>
        Cleaned,
        /// <summary>
        /// Component deliberately put into stasis / holding state so that some action can be applied
        /// </summary>
        /// <example>Priority components can be put in stasis when other components are
        /// stopped / cleaned up before priority components are stopped / cleaned up.</example>
        Stasis
    }

    #endregion Enumerations
}